package www.nomina.model.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import www.nomina.controller.beans.empleadoBean;

public class empleadoDao extends nominaDao {
	// private ArrayList<UsuarioBean> list = new ArrayList<>();
	/**
	 * Complementa el objeto de usuario con los valore de la tupla segun el
	 * atributo usuario
	 * 
	 * @since January
	 * @author Men
	 * @param Empleado
	 * @throws Exception
	 */

	public boolean getUsuario(empleadoBean empleado) throws Exception {
		System.out.println("(EmpleadoDAO.getUsuario)...............execute");
		StringBuilder query = new StringBuilder();

		try {
			query.append("select * from empleado where ='").append(empleado.getRfc()).append("'");

			System.out.println("(EmpleadoDAO.getUsuario):------->"
					+ query.toString());
			conn = this.getConnectionMYSQL();// Obteniendo la conexion de la BD
			ps = conn.prepareStatement(query.toString());// Creando la sentencia
															// para la consulta
															// a la BD
			rs = ps.executeQuery();// Ejecutando el query query que se va a
									// igualar en el resul

			if (rs.next()) {// Obtencion de los campos de la tabla de la BD

				empleado.setId_empleado(rs.getInt("id_empleado"));
				empleado.setRfc(rs.getString("rfc"));
				empleado.setNombre(rs.getString("nombre"));
				empleado.setPuesto(rs.getString("puesto"));
				empleado.setPaterno(rs.getString("paterno"));
				empleado.setMaterno(rs.getString("materno"));
				empleado.setCurp(rs.getString("curp"));
				empleado.setPuesto(rs.getString("puesto"));
				empleado.setColonia(rs.getString("colonia"));
				empleado.setCalle(rs.getString("calle"));
				//empleado.setNumero(rs.getInt("numero"));
				empleado.setCp(rs.getString("cp"));
				empleado.setEstado(rs.getString("estado"));
				empleado.setTelefono1(rs.getString("telefono1"));
				empleado.setTelefono2(rs.getString("telefono2"));
				empleado.setCorreo(rs.getString("correo"));
				//empleado.setFecha_nacimiento(rs.getString("fecha_nacimiento"));
				empleado.setFecha_ingreso(rs.getString("fecha_ingreso"));
				empleado.setForma_pago(rs.getString("forma_pago"));
				empleado.setTipo_contrato(rs.getString("tipo_contrato"));
				//empleado.setAntiguedad(rs.getString("antiguedad"));

				empleado.setImss(rs.getString("imss"));

				empleado.setGenero(rs.getString("genero"));

				return true;
			} else {
				return false;
				// throw new Exception("Error usuario no existe.");
			}

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		}
	}

	public ArrayList<empleadoBean> getEmpleadoPorId(int id_empleado)
			throws Exception {// Creandoun array y obtener el usuario por Id el
								// cual se ocupara en modificar
		StringBuilder query = new StringBuilder();
		ArrayList<empleadoBean> result = new ArrayList<empleadoBean>();
		try {
			query.append("select ").append("id_empleado, ").append("puesto, ")
					.append("nombre, ").append("departamento, ")
					.append("paterno, ").append("materno, ").append("rfc, ")
					.append("imss, ").append("correo, ").append("estado, ")
					.append("colonia, ").append("calle, ").append("numero, ")
					.append("fecha_ingreso, ").append("fecha_nacimiento, ")
					.append("genero, ").append("telefono1, ")
					.append("telefono2, ").append("salario ").append("from ")
					.append("Empleado ")
					// .append(id_empleado)
					.append(";");

			System.out.println("(UsuariosDAO.getCatalgo):------->"
					+ query.toString());
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			empleadoBean vo;

			while (rs.next()) {
				vo = new empleadoBean();

				vo.setId_empleado(rs.getInt("id_empleado"));
				vo.setPuesto(rs.getString("puesto"));
				vo.setNombre(rs.getString("nombre"));
				vo.setDepartamento(rs.getString("departamento"));
				vo.setPaterno(rs.getString("paterno"));
				vo.setMaterno(rs.getString("materno"));
				vo.setRfc(rs.getString("rfc"));
				vo.setImss(rs.getString("imss"));
				vo.setCorreo(rs.getString("correo"));
				vo.setEstado(rs.getString("estado"));
				vo.setColonia(rs.getString("colonia"));
				vo.setCalle(rs.getString("calle"));
				//vo.setNumero(rs.getInt("numero"));
				vo.setFecha_ingreso(rs.getString("fecha_ingreso"));
				//vo.setFecha_nacimiento(rs.getString("fecha_nacimiento"));
				vo.setGenero(rs.getString("genero"));
				vo.setTelefono1(rs.getString("telefono1"));
				vo.setTelefono2(rs.getString("telefono2"));

				result.add(vo);
			}

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		}

		return result;
	}

	public empleadoBean getEmpleadoId(int id) throws Exception {
		System.out.println("(EmpeladoDAO.getUsuario)...............execute");

		StringBuilder query = new StringBuilder();
		empleadoBean empleado = new empleadoBean();
		try {
			query.append("select ").append("* ").append("from ")
					.append("Empleado ").append("Where ")
					.append("id_empleado='").append(id).append("'");

			System.out.println("(UsuariosDAO.getUsuario):------->"
					+ query.toString());
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();

			if (rs.next()) {
				
				empleado.setId_empleado(rs.getInt("id_empleado"));
				empleado.setPuesto(rs.getString("puesto"));
				empleado.setNombre(rs.getString("nombre"));
				empleado.setDepartamento(rs.getString("departamento"));
				empleado.setPaterno(rs.getString("paterno"));
				empleado.setMaterno(rs.getString("materno"));
				empleado.setRfc(rs.getString("rfc"));
				empleado.setImss(rs.getString("imss"));
				empleado.setCorreo(rs.getString("correo"));
				empleado.setEstado(rs.getString("estado"));
				empleado.setColonia(rs.getString("colonia"));
				empleado.setCalle(rs.getString("calle"));
				empleado.setNumero(rs.getString("numero"));
				empleado.setGenero(rs.getString("genero"));
				empleado.setTelefono1(rs.getString("telefono1"));
				empleado.setTelefono2(rs.getString("telefono2"));
				empleado.setFecha_ingreso(rs.getString("fecha_ingreso"));
				empleado.setFecha_inicial_pago(rs.getString("fecha_inicial_pago"));
				empleado.setForma_pago(rs.getString("forma_pago"));
				empleado.setTipo_contrato(rs.getString("tipo_contrato"));
				empleado.setSalario(rs.getString("salario"));
				empleado.setSalario(rs.getString("salario"));
				
				
				

				System.out.println("Usuario encontrado");
			} else {
				throw new Exception("Error usuario no existe.");
			}

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());

		}
		return empleado;
	}

	/**
	 * Proyecto el catalogo de usuarios en un Contenedor
	 * 
	 * @since December 2013
	 * @author Nastick
	 * @param UsuarioBean
	 *            usuario
	 * @throws Exception
	 */
	public ArrayList<empleadoBean> getCatalgo() throws Exception {
		System.out.println("(UsuariosDAO.getCatalgo)...............execute");
		StringBuilder query = new StringBuilder();
		ArrayList<empleadoBean> result = new ArrayList<empleadoBean>();
		try {
			query.append("select id_empleado,id_usuario,puesto,nombre,area,empleado,paterno,materno,rfc,imss,correo,estado,colonia,calle,numero,fecha_ingreso,fecha_nacimiento,genero,telefono1,telefono2,salario,estatus FROM Empleado");

			System.out.println("(UsuariosDAO.getCatalgo):------->"
					+ query.toString());
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			empleadoBean vo;

			while (rs.next()) {

				vo = new empleadoBean();

				vo.setId_empleado(rs.getInt("id_empleado"));
				vo.setPuesto(rs.getString("puesto"));
				vo.setNombre(rs.getString("nombre"));
				vo.setDepartamento(rs.getString("departamento"));
				vo.setPaterno(rs.getString("paterno"));
				vo.setMaterno(rs.getString("materno"));
				vo.setRfc(rs.getString("rfc"));
				vo.setImss(rs.getString("imss"));
				vo.setCorreo(rs.getString("correo"));
				vo.setEstado(rs.getString("estado"));
				vo.setColonia(rs.getString("colonia"));
				vo.setCalle(rs.getString("calle"));
				vo.setNumero(rs.getString("numero"));
				vo.setTelefono1(rs.getString("telefono1"));
				vo.setTelefono2(rs.getString("telefono2"));
				vo.setGenero(rs.getString("genero"));
				vo.setFecha_ingreso(rs.getString("fecha_ingreso"));
				vo.setFecha_pago(rs.getString("fecha_pago"));
				vo.setFecha_inicial_pago(rs.getString("fecha_inicial_pago"));
				vo.setFecha_final_pago(rs.getString("fecha_final_pago"));
				vo.setTipo_contrato(rs.getString("tipo_contrato"));
				vo.setSalario(rs.getString("salario"));
				vo.setForma_pago(rs.getString("forma_pago"));
				vo.setSalario_base(rs.getString("salario_base"));
				vo.setDepartamento(rs.getString("departamento"));
				vo.setPuesto(rs.getString("puesto"));
				vo.setTurno(rs.getString("turno"));
				
				
				

				result.add(vo);
			}

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		}

		return result;
	}

	public void alta(empleadoBean empleado) throws Exception {
		StringBuilder query = new StringBuilder();

		try {
			query.append("insert into empleado (")
					.append("id_usuario, rfc, nombre, paterno, materno, curp,")
					.append("imss, correo, colonia, calle, numero, codigo_postal, estado, telefono_1,")
					.append("telefono_2, genero, fecha_ingreso, fecha_pago,fecha_inicial_pago,fecha_final_pago,forma_pago,")
					.append("tipo_contrato, salario, salario_base, departamento,")
					.append("puesto, turno) ")
					.append("values (")

					.append(empleado.getId_usuario()).append(",'")
					.append(empleado.getRfc()).append("','")
					.append(empleado.getNombre()).append("','")
					.append(empleado.getPaterno()).append("','")
					.append(empleado.getMaterno()).append("','")
					.append(empleado.getCurp()).append("','")
					.append(empleado.getImss()).append("','")
					.append(empleado.getCorreo()).append("','")
					.append(empleado.getColonia()).append("','")
					.append(empleado.getCalle()).append("','")
					.append(empleado.getNumero()).append("','")
					.append(empleado.getCp()).append("','")
					.append(empleado.getEstado()).append("','")
					.append(empleado.getTelefono1()).append("','")
					.append(empleado.getTelefono2()).append("','")
					.append(empleado.getGenero()).append("','")
					.append(empleado.getFecha_ingreso()).append("','")
					.append(empleado.getFecha_pago()).append("','")
					.append(empleado.getFecha_inicial_pago()).append("','")
					.append(empleado.getFecha_final_pago()).append("','")
					.append(empleado.getForma_pago()).append("','")
					.append(empleado.getTipo_contrato()).append("','")
					.append(empleado.getSalario()).append("','")
					.append(empleado.getSalario_base()).append("','")
					.append(empleado.getDepartamento()).append("','")
					.append(empleado.getPuesto()).append("','")
					.append(empleado.getTurno()).append("')");

			System.out.println(query.toString());
			conn = this.getConnectionMYSQL();
			st = conn.createStatement();
			st.executeUpdate(query.toString());

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(st);
			close(conn);
		}

	}

	public void baja(empleadoBean empleado) throws Exception {
		StringBuilder query = new StringBuilder();

		try {
			query.append("UPDATE Empleado SET estatus=0")
					.append(" WHERE estatus=1 and id_empleado=''")
					.append(empleado.getId_empleado());

			System.out.println("(UsuariosAO.getUsuario):------->"
					+ query.toString());
			conn = this.getConnectionMYSQL();
			st = conn.createStatement();
			st.executeUpdate(query.toString());
		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		}

	}

	public void modificar(empleadoBean empleado) throws Exception {

		StringBuilder query = new StringBuilder();

		try {
			query.append("UPDATE ").append("Empleado ").append("SET ")

			.append("puesto='").append(empleado.getPuesto()).append("',")

			.append("nombre='").append(empleado.getNombre()).append("',")

			.append("area='").append(empleado.getDepartamento()).append("',")

			.append("nombre=' ").append(empleado.getNombre()).append("',")

			.append("paterno=' ").append(empleado.getPaterno()).append("',")

			.append("materno=' ").append(empleado.getMaterno()).append("',")

			.append("rfc=' ").append(empleado.getRfc()).append("',")

			.append("imss=' ").append(empleado.getImss()).append("'")

			.append("correo=' ").append(empleado.getCorreo()).append("'")

			.append("estado=' ").append(empleado.getEstado()).append("'")

			.append("colonia=' ").append(empleado.getColonia()).append("'")

			.append("calle=' ").append(empleado.getCalle()).append("'")

			.append("numero=' ").append(empleado.getNumero()).append("'")

			.append("fecha_ingreso=' ").append(empleado.getFecha_ingreso()).append("'")

			//.append("fecha_nacimiento=' ").append(empleado.getFecha_nacimiento()).append("'")

			.append("genero=' ").append(empleado.getGenero()).append("'")

			.append("telefono1=' ").append(empleado.getTelefono1()).append("'")

			.append("telefono2=' ").append(empleado.getTelefono2()).append("'")

			.append("salario= ").append(empleado.getSalario()).append("")

			.append(" WHERE id_empleado=''").append(empleado.getId_empleado());

			System.out.println("(UsuariosDAO.getUsuario):------->"+ query.toString());
			conn = this.getConnectionMYSQL();
			st = conn.createStatement();
			st.executeUpdate(query.toString());
			
		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		}

	}

}
